// 入口文件
console.log( '入口文件。。。' )

// 使用 import 命令输入模块功能

/* // 1.基本使用
// import命令有提升的效果，提升到当前作用域顶部
// 模块1。。。
// 模块2。。。
// 入口文件。。。
import {fn1} from './module1.js'// import加载到module1输出的对象并解构赋值给fn1
import {fn2} from './module2.js'// import加载到module2输出的对象并解构赋值给fn2
fn1(2,3)// 5
fn2(5,2)// 3 */


/* // 2.应用场景
import {name,age,sex,say} from './module1.js'
console.log( name )
console.log( age )
console.log( sex )
say() */


/* // 3.应用场景
import {name,age,sex,say} from './module1.js'
console.log( name )
console.log( age )
console.log( sex )
say()
 */


/* // 4.应用场景
import {fn1,fn2,fn3} from './module1.js'
fn1()
fn2()
fn3() */


/* // 5.应用场景
import {test,obj} from './module1.js'
console.log( test.prototype )
console.log( obj.__proto__ ) */


/* // 6.应用场景
// 注意：输入默认输出的内容时，不需要解构赋值
import fn from './module1.js'
fn()// fn自定义的变量名 */


/* // 7.应用场景
// 同一个模块可以被加载多次，但是只有第一次会执行
import { name,say } from "./module1.js"
import fn from "./module1.js"

// import fn,{name,say} from './module1.js'

console.log( name )
say()
fn() */


/* // 8.应用场景
// 输入模块功能时也可以使用 as 修改输入的变量名
// import {name,age,sex,say} from './module1.js'
// console.log( name )
// say()
import {name as n,age as a,sex as s,say as fn} from './module1.js'
console.log( n )
console.log( a )
console.log( s )
fn() */


/* // 9.应用场景
// 可以使用*号和as输入模块的所有内容
import * as obj from './module1.js'
console.log( obj )// {...} 包含正常输出和默认输出
console.log( obj.name )
obj.say()
obj.default() */


/* // 10.应用场景
import {num} from './module1.js'
console.log( num )// 123
setTimeout(()=>{
    console.log( num )// 456
},1200) */


// 11.应用场景
// 在模块内部，最外层的this不指向window对象，而是指向undefined
import './module1.js'// 只执行模块，不加载任何内容
console.log( this )// undefined
